dnl +------------------------------------------------------------------+
dnl | Network UPS Tools: configure.ac                                  |
dnl +------------------------------------------------------------------+

dnl NUT version number is defined here, with a Git suffix in include/nut_version.h
AC_INIT([nut], [2.7.4.1], [https://github.com/networkupstools/nut/issues])
AC_CONFIG_AUX_DIR([.])
AC_CONFIG_SRCDIR(server/upsd.c)
AC_CONFIG_MACRO_DIR([m4])
echo "Network UPS Tools version ${PACKAGE_VERSION}"
AC_CANONICAL_SYSTEM
NUT_CHECK_OS
AC_CONFIG_HEADER(include/config.h)
AC_PREFIX_DEFAULT(/usr/local/ups)
AM_INIT_AUTOMAKE([subdir-objects])

dnl we need Autoconf 2.60 or better to enable features of Posix that are extensions to C
AC_MSG_CHECKING(for autoconf macro to enable system extensions)
m4_version_prereq(2.60, [
	AC_MSG_RESULT(yes)
	AC_USE_SYSTEM_EXTENSIONS
], [
	AC_MSG_RESULT(no)
])

dnl Use "./configure --enable-maintainer-mode" to keep Makefile.in and Makefile
dnl in sync after Git updates.
AM_MAINTAINER_MODE

dnl Some systems have older autotools without direct macro support for PKG_CONF*
have_PKG_CONFIG=yes
AC_PATH_PROG(dummy_PKG_CONFIG, pkg-config)
AS_IF([test x"$dummy_PKG_CONFIG" = xno || test -z "$dummy_PKG_CONFIG"],
    [have_PKG_CONFIG=no],
    [AC_MSG_NOTICE([checking for autoconf macro support of pkg-config])
     PKG_PROG_PKG_CONFIG
     dummy_RES=$?
     AS_IF([test $dummy_RES = 0],
        [AC_MSG_NOTICE([checking for autoconf macro support of pkg-config module checker])
         PKG_CHECK_MODULES([dummy_PKG_CONFIG], [pkg-config],
            [], [have_PKG_CONFIG=no])
        ], [have_PKG_CONFIG=no])]
)
AS_IF([test x"$have_PKG_CONFIG" = xno],
    [AC_MSG_WARN([pkg-config is needed to look for further dependencies (will be skipped)])])


dnl Various version related processing
dnl ----------------------------------

dnl # the following is commented out, because the UPS_VERSION macro now
dnl # resides in include/nut_version.h, which is generated by Makefile.am,
dnl # rather than in include/config.h, which is generated by configure.  The
dnl # reason is that the SVN revision should be computed at compile time,
dnl # not configure time.
dnl AC_DEFINE_UNQUOTED(UPS_VERSION, "${PACKAGE_VERSION}", [NUT version])

dnl However, automatically define the tree version (mostly for AC_SUBST)
TREE_VERSION="`echo ${PACKAGE_VERSION} | awk '{ print substr($0,1,3) }'`"
AC_DEFINE_UNQUOTED(TREE_VERSION, "${TREE_VERSION}", [NUT tree version])

dnl Should not be necessary, since old servers have well-defined errors for
dnl unsupported commands:
NUT_NETVERSION="1.2"
AC_DEFINE_UNQUOTED(NUT_NETVERSION, "${NUT_NETVERSION}", [NUT network protocol version])


dnl Fix this early so we can expand with eval later
test "${prefix}" = "NONE" && prefix="${ac_default_prefix}"
test "${exec_prefix}" = "NONE" && exec_prefix='${prefix}'

CFLAGS=${CFLAGS-"-O"}

dnl NOTE: for definition of NUT_* autoconf macros, see m4/ directory
dnl and docs/macros.txt

dnl +------------------------------------------------------------------+
dnl | default values for things later on (can be overridden)           |

STATEPATH="/var/state/ups"

cgiexecdir='${exec_prefix}/cgi-bin'
driverexecdir='${exec_prefix}/bin'
htmldir='${prefix}/html'
pkgconfigdir='${libdir}/pkgconfig'
auglensdir='/usr/share/augeas/lenses/dist'
if test ! -d "${auglensdir}"; then
   auglensdir='/usr/share/augeas/lenses'
   if test ! -d "${auglensdir}"; then
      auglensdir=''
   fi
fi
hotplugdir='/etc/hotplug'
if test ! -d "${hotplugdir}"; then
   hotplugdir=''
fi
udevdir='/lib/udev'
if test ! -d "${udevdir}"; then
   udevdir='/etc/udev'
   if test ! -d "${udevdir}"; then
      udevdir=''
   fi
fi

devddir='/usr/local/etc/devd'
if test ! -d "${devddir}"; then
   devddir='/etc/devd'
   if test ! -d "${devddir}"; then
      devddir=''
   fi
fi

RUN_AS_USER="nobody"
RUN_AS_GROUP="nobody"
PIDPATH="/var/run"

dnl Define directory where LIBOBJS replacement functions are
AC_CONFIG_LIBOBJ_DIR([common])

dnl +-------------------------------------------------------------------

AC_PROG_CC
AC_PROG_CC_C99
dnl Needed for per-target flags
AM_PROG_CC_C_O
AC_PROG_CPP
AC_PROG_CXX
AC_PROG_CXX_C_O
AC_PROG_INSTALL
AC_PROG_MKDIR_P
AC_PROG_LN_S
AC_PROG_EGREP
AC_PATH_PROG(AR, ar)
AC_CHECK_TOOL(RANLIB, ranlib, :)
dnl Postpone call to AC_PROG_LIBTOOL to allow disabling static lib
AC_C_BIGENDIAN
AC_C_INLINE
AC_C_FLEXIBLE_ARRAY_MEMBER
AC_C_VARARRAYS
AC_CHECK_FUNCS(flock lockf fcvt fcvtl pow10 round abs_val)
AC_CHECK_FUNCS(cfsetispeed tcsendbreak)
AC_CHECK_FUNCS(seteuid setsid getpassphrase)
AC_CHECK_FUNCS(on_exit strptime setlogmask)
AC_CHECK_DECLS(LOG_UPTO, [], [], [#include <syslog.h>])

AC_MSG_CHECKING([whether ln -sr works])
dnl We need to relative-symlink some files. Or hardlink. Or copy...
LN_S_R="cp -pR"
if test "$as_ln_s" = "ln -s" ; then
    LN_S_R="ln"
    DIR1="$(mktemp -d "dir1.XXXXXXX")" && \
    DIR2="$(mktemp -d "dir2.XXXXXXX")" && \
    touch "${DIR1}/a" && \
    $as_ln_s -r "${DIR1}/a" "${DIR2}/b" && \
    ls -la "${DIR2}/b" | grep '\.\./' > /dev/null && \
    LN_S_R="$as_ln_s -r"
    rm -rf "${DIR1}" "${DIR2}"
fi
AC_SUBST([LN_S_R], [${LN_S_R}])
if test "$LN_S_R" = "ln -s -r" ; then
  AC_MSG_RESULT([yes])
else
  AC_MSG_RESULT([no, using $LN_S_R])
fi

dnl the following may add stuff to LIBOBJS (is this still needed?)
AC_CHECK_FUNCS(vsnprintf snprintf, [], [
	AC_LIBOBJ(snprintf)
	AC_TYPE_LONG_DOUBLE
	AC_TYPE_LONG_LONG_INT
])

AC_REPLACE_FUNCS(setenv strerror atexit)


dnl
dnl Only use these when compiling with gcc
dnl
if ( test "${GCC}" = "yes" )
then
  CFLAGS="${CFLAGS} -Wall -Wsign-compare"
fi

case ${target_os} in
   solaris2* )
      dnl On Solaris, this allows errno to use thread local storage
      CFLAGS="${CFLAGS} -D_REENTRANT"
      ;;
   aix* )
      dnl On AIX, this allows errno to use thread local storage
      CFLAGS="${CFLAGS} -D_REENTRANT"
      ;;
   hpux11* )
      dnl It seems like the thread safe string functions will not be included
      dnl on 64 bit HP-UX unless we define _REENTRANT
      CFLAGS="${CFLAGS} -D_REENTRANT"
      ;;
esac

dnl optind handling:
dnl need to check if unistd.h is enough, else try getopt.h, else need decls
AC_CHECK_DECLS(optind, [], [
	AC_CHECK_HEADERS(getopt.h, [
		AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed])
	], [
		AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations])
	], [AC_INCLUDES_DEFAULT])
], [AC_INCLUDES_DEFAULT])

dnl do a 2nd check to ensure inclusion of getopt.h, in case optind is known
AC_CHECK_HEADERS(getopt.h, [
	AC_DEFINE(NEED_GETOPT_H, 1, [Define if getopt.h is needed])
], [
	AC_DEFINE(NEED_GETOPT_DECLS, 1, [Define to use explicit getopt declarations])
], [AC_INCLUDES_DEFAULT])

dnl also check for getopt_long
AC_CHECK_FUNCS(getopt_long)

dnl FreeBSD serial locking compatibility - look for uu_lock in libutil.h
AC_CHECK_DECLS(uu_lock, [
	AC_DEFINE(HAVE_UU_LOCK, 1, [Use uu_lock for locking (FreeBSD)])
	SERLIBS="-lutil"
	dnl put in some better defaults for FreeBSD
	RUN_AS_USER="uucp"
], [
	SERLIBS=""
], [
#include <sys/types.h>
#include <libutil.h>
])

AC_CHECK_DECLS(__func__, [], [
	AC_CHECK_DECLS(__FUNCTION__, [
		AC_DEFINE(__func__, __FUNCTION__, [Replace missing __func__ declaration])
	], [
		AC_DEFINE(__func__, __LINE__, [Replace missing  __func__ declaration])
	], [AC_INCLUDES_DEFAULT])
], [AC_INCLUDES_DEFAULT])

dnl Solaris compatibility - check for -lnsl and -lsocket
AC_SEARCH_LIBS(gethostbyname, nsl)
AC_SEARCH_LIBS(connect, socket)

AC_HEADER_TIME
AC_CHECK_HEADERS(sys/modem.h stdarg.h varargs.h sys/termios.h sys/time.h, [], [], [AC_INCLUDES_DEFAULT])

dnl pthread related checks
AC_SEARCH_LIBS([pthread_create], [pthread],
       [AC_DEFINE(HAVE_PTHREAD, 1, [Define to enable pthread support code])],
       [])

dnl ----------------------------------------------------------------------
dnl Check for types and define possible replacements
NUT_TYPE_SOCKLEN_T

dnl ----------------------------------------------------------------------
dnl check for --with-all (or --without-all, or --with-all=auto) flag

AC_MSG_CHECKING(for --with-all)
AC_ARG_WITH(all,
	AS_HELP_STRING([--with-all], [enable serial, usb, snmp, neon, ipmi, powerman, modbus, cgi, dev, avahi, linux_i2c]),
[
	if test -n "${withval}"; then
		dnl Note: we allow "no" as a positive value, because
		dnl this is what the user expects from --without-all
		if test -z "${with_serial}"; then with_serial="${withval}"; fi
		if test -z "${with_usb}"; then with_usb="${withval}"; fi
		if test -z "${with_snmp}"; then with_snmp="${withval}"; fi
		if test -z "${with_neon}"; then with_neon="${withval}"; fi
		if test -z "${with_powerman}"; then with_powerman="${withval}"; fi
		if test -z "${with_modbus}"; then with_modbus="${withval}"; fi
		if test -z "${with_cgi}"; then with_cgi="${withval}"; fi
		if test -z "${with_dev}"; then with_dev="${withval}"; fi
		if test -z "${with_avahi}"; then with_avahi="${withval}"; fi
		if test -z "${with_ipmi}"; then with_ipmi="${withval}"; fi
		if test -z "${with_linux_i2c}"; then with_linux_i2c="${withval}"; fi
		AC_MSG_RESULT("${withval}")
	else
		AC_MSG_RESULT(not given)
	fi
], [
	AC_MSG_RESULT(not given)
])

dnl ----------------------------------------------------------------------
dnl declare a number of --with-FEATURE options. Do this early, so that
dnl they are listed near the top by "./configure --help"

NUT_ARG_WITH([dev], [build and install the development files], [no])
NUT_ARG_WITH([serial], [build and install serial drivers], [yes])
NUT_ARG_WITH([usb], [build and install USB drivers], [auto])
NUT_ARG_WITH([avahi], [build and install Avahi support], [auto])
dnl The NUT legacy option was --with-doc; however to simplify configuration
dnl in some common packaging frameworks, we also allow --with-docs as
dnl a second-class citizen (if both are set, the old option name wins).
dnl Also note that the legacy default was "man=yes" due to requirements
dnl of the "make distcheck", but it was reduced to "man=auto" so that
dnl the usual builds can pass by default on systems without asciidoc.
nut_with_docs="man=auto"
NUT_ARG_WITH([docs], [build and install documentation (alias to --with-doc)], [man=auto])
NUT_ARG_WITH([doc], [build and install documentation (see docs/configure.txt for many variants of the option)], [${nut_with_docs}])

dnl ----------------------------------------------------------------------
dnl Check for presence and compiler flags of various libraries

dnl These checks are performed unconditionally, even if the corresponding
dnl --with-* options are not given. This is because we cannot predict
dnl what will be in the --with-drivers argument.

NUT_CHECK_LIBNETSNMP
NUT_CHECK_LIBUSB
NUT_ARG_WITH([snmp], [build and install SNMP drivers], [auto])
NUT_CHECK_LIBNETSNMP
NUT_ARG_WITH([neon], [build and install neon based XML/HTTP driver], [auto])
NUT_CHECK_LIBNEON
NUT_ARG_WITH([powerman], [build and install Powerman PDU client driver], [auto])
NUT_CHECK_LIBPOWERMAN
NUT_ARG_WITH([modbus], [build and install modbus drivers], [auto])
NUT_CHECK_LIBMODBUS
NUT_CHECK_LIBAVAHI

dnl ----------------------------------------------------------------------
dnl additional USB-related checks

dnl Solaris 10/11 USB handling (need librt and libusb runtime path)
dnl HPUX, since v11, needs an explicit activation of pthreads
case ${target_os} in
   solaris2.1* )
      AC_MSG_CHECKING([for Solaris 10 / 11 specific configuration for usb drivers])
      AC_SEARCH_LIBS(nanosleep, rt)
      LIBUSB_LIBS="-R/usr/sfw/lib ${LIBUSB_LIBS}"
      dnl FIXME: Sun's libusb doesn't support timeout (so blocks notification)
      dnl and need to call libusb close upon reconnection
      AC_DEFINE(SUN_LIBUSB, 1, [Define to 1 for Sun version of the libusb.])
      SUN_LIBUSB=1
      AC_MSG_RESULT([${LIBUSB_LIBS}])
      ;;
    hpux11*)
      CFLAGS="${CFLAGS} -lpthread"
      ;;
esac


dnl ----------------------------------------------------------------------
dnl checks related to --with-serial

dnl ${nut_with_serial}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_serial}" != "no"; then
  nut_with_serial="yes"
fi

NUT_REPORT_FEATURE([build serial drivers], [${nut_with_serial}], [],
					[WITH_SERIAL], [Define to enable serial support])

dnl ----------------------------------------------------------------------
dnl checks related to --with-usb

dnl ${nut_with_usb}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_usb}" = "yes" -a "${nut_have_libusb}" != "yes"; then
   AC_MSG_ERROR([USB drivers requested, but libusb not found.])
fi

if test "${nut_with_usb}" != "no"; then
   nut_with_usb="${nut_have_libusb}"
fi

NUT_REPORT_FEATURE([build USB drivers], [${nut_with_usb}], [],
					[WITH_USB], [Define to enable USB support])

dnl ----------------------------------------------------------------------
dnl checks related to --with-neon

dnl ${nut_with_neon}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_neon}" = "yes" -a "${nut_have_neon}" != "yes"; then
   AC_MSG_ERROR([neon libraries not found, required for neon based XML/HTTP driver])
fi

if test "${nut_with_neon}" != "no"; then
   nut_with_neon="${nut_have_neon}"
fi

NUT_REPORT_FEATURE([build neon based XML driver], [${nut_with_neon}], [],
					[WITH_NEON], [Define to enable Neon HTTP support])
AM_CONDITIONAL([HAVE_NEON], [test "${nut_have_neon}" = "yes"])

dnl ----------------------------------------------------------------------
dnl checks related to --with-avahi

dnl ${nut_with_avahi}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_avahi}" = "yes" -a "${nut_have_avahi}" != "yes"; then
   AC_MSG_ERROR([avahi libraries not found])
fi

if test "${nut_with_avahi}" != "no"; then
   nut_with_avahi="${nut_have_avahi}"
fi

NUT_REPORT_FEATURE([enable Avahi support], [${nut_with_avahi}], [],
					[WITH_AVAHI], [Define to enable Avahi support])

dnl ----------------------------------------------------------------------

dnl checks related to --with-powerman

dnl ${nut_with_powerman}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_powerman}" = "yes" -a "${nut_have_libpowerman}" != "yes"; then
   AC_MSG_ERROR([Powerman client libraries not found, required for Powerman PDU client driver])
fi

if test "${nut_with_powerman}" != "no"; then
   nut_with_powerman="${nut_have_libpowerman}"
fi

NUT_REPORT_FEATURE([build Powerman PDU client driver], [${nut_with_powerman}], [],
					[WITH_LIBPOWERMAN], [Define to enable Powerman PDU support])

dnl ----------------------------------------------------------------------
dnl checks related to --with-modbus

dnl ${nut_with_modbus}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_modbus}" = "yes" -a "${nut_have_libmodbus}" != "yes"; then
   AC_MSG_ERROR([modbus library not found, required for Modbus driver])
fi

if test "${nut_with_modbus}" != "no"; then
   nut_with_modbus="${nut_have_libmodbus}"
fi

NUT_REPORT_FEATURE([build Modbus driver], [${nut_with_modbus}], [],
                                       [WITH_MODBUS], [Define to enable Modbus support])
dnl ----------------------------------------------------------------------
dnl Check for with-ipmi, and --with-freeipmi (or --with-openipmi)
dnl Only one can be enabled at a time, with a preference for FreeIPMI
dnl if both are available (since it is the only one supported ATM!!)

nut_ipmi_lib=""

NUT_ARG_WITH([ipmi], [build and install IPMI PSU driver], [auto])
NUT_ARG_WITH([freeipmi], [enable IPMI support using FreeIPMI], [auto])
dnl NUT_ARG_WITH([openipmi], [enable IPMI support using OpenIPMI], [auto])

dnl ${nut_with_ipmi}: any value except "yes" or "no" is treated as "auto". 
if test "${nut_with_ipmi}" != "no"; then
   dnl check if FreeIPMI (and maybe later OpenIPMI) was explicitly requested
   if test "${nut_with_freeipmi}" = "yes"; then
      NUT_CHECK_LIBFREEIPMI
      if test "${nut_have_freeipmi}" != "yes"; then
         AC_MSG_ERROR([FreeIPMI not found, required for IPMI support])
      fi
      dnl Implies --with-ipmi
      nut_with_ipmi="yes"
   dnl elif test "${nut_with_openipmi}" = "yes"; then
      dnl AC_MSG_ERROR([OpenIPMI is not yet supported])
      dnl NUT_CHECK_LIBOPENIPMI
      dnl if test "${nut_have_openipmi}" != "yes"; then
      dnl    AC_MSG_ERROR([OpenIPMI not found, required for IPMI support])
      dnl fi
      dnl    Implies --with-ipmi
      dnl    nut_with_ipmi="yes"
      dnl    AC_DEFINE(WITH_OPENIPMI, 1, [Define to enable IPMI support using OpenIPMI])
   else
      dnl Prefer FreeIPMI over OpenIPMI otherwise
      NUT_CHECK_LIBFREEIPMI
      if test "${nut_have_freeipmi}" != "yes"; then
         if test "${nut_with_ipmi}" = "yes"; then
            AC_MSG_ERROR([FreeIPMI not found, required for IPMI support])
         fi
         nut_with_ipmi="no"
         dnl NUT_CHECK_OPENIPMI
         dnl if test "${nut_have_openipmi}" != "yes"; then
         dnl    if test "${nut_with_ipmi}" = "yes"; then
         dnl       AC_MSG_ERROR([Neither GNU FreeIPMI nor OpenIPMI was found (required for IPMI support)])
         dnl    fi
         dnl    nut_with_ipmi="no"
         dnl else
         dnl    Implies --with-ipmi
         dnl    nut_with_ipmi="yes"
         dnl    nut_with_openipmi="yes"
         dnl fi
      else
         dnl Implies --with-ipmi
         nut_with_ipmi="yes"
         nut_with_freeipmi="yes"
         AC_DEFINE(WITH_FREEIPMI, 1, [Define to enable IPMI support using FreeIPMI])
      fi
   fi
fi


NUT_REPORT_FEATURE([build IPMI driver], [${nut_with_ipmi}], [${nut_ipmi_lib}],
					[WITH_IPMI], [Define to enable IPMI support])

dnl Note: we still have to manually enable complementary AC_DEFINEs (see above)
dnl and AM_CONDITIONALs (see below)...
AM_CONDITIONAL(WITH_FREEIPMI, test "${nut_with_freeipmi}" = "yes")
dnl AM_CONDITIONAL(WITH_OPENIPMI, test "${nut_with_openipmi}" = "yes")


dnl ----------------------------------------------------------------------
dnl The Mac OS X meta-driver looks at IOKit Power Sources keys managed by
dnl the internal USB UPS driver.
dnl
dnl FIXME: be slightly more clever here:

NUT_ARG_WITH([macosx_ups], [build and install Mac OS X Power Sources meta-driver], [auto])
if test "${nut_with_macosx_ups}" != no; then
   if test -d /System/Library/Frameworks/IOKit.framework/ ; then
      nut_with_macosx_ups="yes"
   else
      nut_with_macosx_ups="no"
   fi
fi

NUT_REPORT_FEATURE([build Mac OS X meta-driver],
			[${nut_with_macosx_ups}], [${nut_macosx_ups_lib}],
			[WITH_MACOSX], [Define to enable Mac OS X meta-driver])

dnl ----------------------------------------------------------------------
dnl checks related to --with_linux_i2c
dnl Check for i2c header on Linux, used for ASEM UPS driver
NUT_ARG_WITH([linux_i2c], [build and install i2c drivers], [auto])
if test "${nut_with_linux_i2c}" != no; then
    case ${target_os} in
        linux* )
            AC_CHECK_DECLS(
                [i2c_smbus_read_word_data, i2c_smbus_write_word_data, i2c_smbus_read_block_data],
                [nut_with_linux_i2c="yes"],
                [nut_with_linux_i2c="no"],
                [#include <stdio.h>
                 #include <linux/i2c-dev.h>
                ]
            )
            ;;
        * )
            nut_with_linux_i2c="no"
            ;;
    esac
fi
NUT_REPORT_FEATURE(
    [build i2c based drivers],
    [${nut_with_linux_i2c}],
    [],
    [WITH_LINUX_I2C],
    [Define to enable I2C support]
)

dnl ----------------------------------------------------------------------
dnl Check for with-ssl, and --with-nss or --with-openssl
dnl Only one can be enabled at a time, with a preference for OpenSSL
dnl if both are available

nut_ssl_lib=""

NUT_ARG_WITH([ssl], [enable SSL support (either NSS or OpenSSL)], [auto])
NUT_ARG_WITH([nss], [enable SSL support using Mozilla NSS], [auto])
NUT_ARG_WITH([openssl], [enable SSL support using OpenSSL], [auto])

dnl ${nut_with_ssl}: any value except "yes" or "no" is treated as "auto". 
if test "${nut_with_ssl}" != "no"; then
   dnl check if either NSS or OpenSSL was explicitly requested
   if test "${nut_with_nss}" = "yes"; then
      NUT_CHECK_LIBNSS
      if test "${nut_have_libnss}" != "yes"; then
         AC_MSG_ERROR([Mozilla NSS not found (required for SSL support)])
      fi
   elif test "${nut_with_openssl}" = "yes"; then
      NUT_CHECK_LIBOPENSSL
      if test "${nut_have_openssl}" != "yes"; then
         AC_MSG_ERROR([OpenSSL not found (required for SSL support)])
      fi
   else
      dnl Prefer OpenSSL over NSS otherwise
      NUT_CHECK_LIBOPENSSL
      if test "${nut_have_openssl}" != "yes"; then
         NUT_CHECK_LIBNSS
         if test "${nut_have_libnss}" != "yes"; then
            dnl Only abort if SSL has been explicitly requested by the user
            if test "${nut_with_ssl}" = "yes"; then
               AC_MSG_ERROR([Neither Mozilla NSS nor OpenSSL was found, but one is needed for the requested SSL support.])
            else
               AC_MSG_WARN([Neither Mozilla NSS nor OpenSSL was found (required for SSL support)])
            fi
            nut_with_ssl="no"
         else
            nut_with_nss="${nut_have_libnss}"
         fi
      else
         nut_with_openssl="${nut_have_openssl}"
      fi
   fi
fi

AM_CONDITIONAL(WITH_NSS, test "${nut_with_nss}" = "yes")
AM_CONDITIONAL(WITH_OPENSSL, test "${nut_with_openssl}" = "yes")

NUT_REPORT_FEATURE([enable SSL support], [${nut_with_ssl}], [${nut_ssl_lib}],
					[WITH_SSL], [Define to enable SSL])

dnl ----------------------------------------------------------------------
dnl Check for --with-wrap

NUT_ARG_WITH([wrap], [enable libwrap (tcp-wrappers) support], [auto])

dnl ${nut_with_wrap}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_wrap}" != "no"; then
   dnl check for libwrap compiler flags
   NUT_CHECK_LIBWRAP
fi

if test "${nut_with_wrap}" = "yes" -a "${nut_have_libwrap}" != "yes"; then
   AC_MSG_ERROR([libwrap not found])
fi

if test "${nut_with_wrap}" != "no"; then
   nut_with_wrap="${nut_have_libwrap}"
fi

NUT_REPORT_FEATURE([enable libwrap (tcp-wrappers) support], [${nut_with_wrap}], [],
					[WITH_WRAP], [Define to enable libwrap (tcp-wrappers) support])


dnl ----------------------------------------------------------------------
dnl Check for --with-libltdl

NUT_ARG_WITH([libltdl], [enable libltdl (Libtool dlopen abstraction) support], [auto])

dnl ${nut_with_libltdl}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_libltdl}" != "no"; then
   dnl check for libltdl compiler flags
   NUT_CHECK_LIBLTDL
fi

if test "${nut_with_libltdl}" = "yes" -a "${nut_have_libltdl}" != "yes"; then
   AC_MSG_ERROR([libltdl not found])
fi

if test "${nut_with_libltdl}" != "no"; then
   nut_with_libltdl="${nut_have_libltdl}"
fi

NUT_REPORT_FEATURE([enable libltdl (Libtool dlopen abstraction) support], [${nut_with_libltdl}], [],
					[WITH_LIBLTDL], [Define to enable libltdl (Libtool dlopen abstraction) support])

dnl Explicitly report if we are building nut-scanner or not
dnl since it requires libltdl
NUT_REPORT([build nut-scanner], [${nut_with_libltdl}])

dnl ----------------------------------------------------------------------
dnl checks related to --with-cgi

NUT_ARG_WITH([cgi], [build and install the CGI programs], [no])

dnl ${nut_with_cgi}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_cgi}" != "no"; then
   dnl check for libgd compiler flags
   NUT_CHECK_LIBGD
fi

if test "${nut_with_cgi}" = "yes" -a "${nut_have_libgd}" != "yes"; then
   AC_MSG_ERROR([libgd not found, required for CGI build])
fi

if test "${nut_with_cgi}" != "no"; then
   nut_with_cgi="${nut_have_libgd}"
fi

NUT_REPORT_FEATURE([build CGI programs], [${nut_with_cgi}], [],
					[WITH_CGI], [Define to enable CGI (HTTP) support])


dnl ----------------------------------------------------------------------

dnl checks related to --with-doc

dnl Always check for AsciiDoc prerequisites, since even if --with-doc
dnl is set to 'no', we may still want to build some doc targets manually
dnl (so enable the Makefile recipes for those targets if tools are available)
NUT_CHECK_ASCIIDOC

NUT_REPORT_FEATURE([build and install documentation], [${nut_with_doc}], [],
					[WITH_ASCIIDOC], [Define to enable Asciidoc support])

DOC_INSTALL_DISTED_MANS=no

case "${nut_with_doc}" in
	yes|all)
		nut_doc_build_list="man html-single html-chunked pdf"
		;;
	auto)
		nut_doc_build_list="man=auto html-single=auto html-chunked=auto pdf=auto"
		;;
	skip)
		nut_doc_build_list="man=skip html-single=skip html-chunked=skip pdf=skip"
		;;
	no)
		nut_doc_build_list=""
		;;
dnl If user passed --with-doc='' they they want nothing, right?
	"")
		nut_doc_build_list=""
		AC_MSG_NOTICE([Got explicit empty list of document formats to build; nothing will be generated])
		;;
	*)
		nut_doc_build_list="`echo ${nut_with_doc} | sed 's/,/ /g'`"
		AC_MSG_NOTICE([Got explicit list of document formats to build or not: ${nut_doc_build_list}; formats not listed will be silently skipped])
		;;
esac

if test -z "${abs_srcdir}" ; then
	case "${srcdir}" in
		/*) abs_srcdir="${srcdir}";;
		"") AC_MSG_ERROR([Can not detect 'srcdir']) ;;
		*)  abs_srcdir="$(cd "${srcdir}" && pwd)" ;;
	esac
fi
DOCTESTDIR="$(mktemp -d configure-test.docbuild.$$.XXXXXXX)" && \
DOCTESTDIR="$(cd "$DOCTESTDIR" && pwd)"

dnl Note: Do not cover ${nut_doc_build_list} in braces or quotes here,
dnl to ensure that it is processed as several space-separated tokens
for nut_doc_build_target in $nut_doc_build_list; do
	case "${nut_doc_build_target}" in
	*=*=*)	rm -rf "${DOCTESTDIR}"
		AC_MSG_ERROR([Invalid documentation format option: ${nut_doc_build_target}]) ;;
	*=*)
		nut_doc_build_target_base="`echo "${nut_doc_build_target}" | sed 's,=.*$,,'`"
		nut_doc_build_target_flag="`echo "${nut_doc_build_target}" | sed 's,^.*=,,'`"
		;;
	*)
		nut_doc_build_target_base="${nut_doc_build_target}"
		nut_doc_build_target_flag="yes"
		;;
	esac
	case "${nut_doc_build_target_flag}" in
	yes|no|auto|skip) ;;
	"") nut_doc_build_target_flag="yes" ;;
	*)	rm -rf "${DOCTESTDIR}"
		AC_MSG_ERROR([Invalid documentation format option: ${nut_doc_build_target}]) ;;
	esac
	AC_MSG_CHECKING([desire and ability to build ${nut_doc_build_target_base} documentation])
	AC_MSG_RESULT([${nut_doc_build_target_flag}])

	case "${nut_doc_build_target}" in
	*=no|*=skip)
		DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
		;;

dnl Notes: Document options below assume either no flag value (which
dnl by default means "yes"), "yes" which is a requirement, or "auto"
dnl to detect if we can build the wanted documentation format and yet
dnl not fail if we have no tools to generate it (so add to SKIP list).

	html-single*)
		AC_MSG_CHECKING([if asciidoc version can build ${nut_doc_build_target_base} (minimum required ${ASCIIDOC_MIN_VERSION})])
		can_build_doc_html_single=no
		AX_COMPARE_VERSION([${ASCIIDOC_VERSION}], [ge], [${ASCIIDOC_MIN_VERSION}], [
			( cd "$DOCTESTDIR" && ${A2X} --attribute=xhtml11_format --format=xhtml --xsl-file="${abs_srcdir}"/docs/xhtml.xsl --destination-dir=. "${abs_srcdir}"/docs/asciidoc.txt && test -s asciidoc.html ) && can_build_doc_html_single=yes
			rm -f "$DOCTESTDIR"/asciidoc*.htm*
		], [])
		if test "${can_build_doc_html_single}" = yes ; then
			AC_MSG_RESULT(yes)
			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
		else
			AC_MSG_RESULT(no)
			if test "${nut_doc_build_target_flag}" = "yes" ; then
				DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
				AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation which you requested])
			else
				DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
			fi
		fi
		;;

	html-chunked*)
		AC_MSG_CHECKING([if a2x version can build ${nut_doc_build_target_base} (minimum required ${ASCIIDOC_MIN_VERSION})])
		can_build_doc_html_chunked=no
		AX_COMPARE_VERSION([${A2X_VERSION}], [ge], [${ASCIIDOC_MIN_VERSION}], [
			( cd "$DOCTESTDIR" && ${A2X} --attribute=chunked_format --format=chunked --xsl-file="${abs_srcdir}"/docs/chunked.xsl --destination-dir=. "${abs_srcdir}"/docs/FAQ.txt && test -s FAQ.chunked/index.html ) && can_build_doc_html_chunked=yes
			rm -rf "${DOCTESTDIR}"/FAQ*.chunked*
		], [])
		if test "${can_build_doc_html_chunked}" = yes ; then
			AC_MSG_RESULT(yes)
			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
		else
			AC_MSG_RESULT(no)
			if test "${nut_doc_build_target_flag}" = "yes" ; then
				DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
				AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation which you requested])
			else
				DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
			fi
		fi
		;;

	pdf*)
		AC_MSG_CHECKING([if dblatex version can build ${nut_doc_build_target_base} (minimum required ${DBLATEX_MIN_VERSION})])
		can_build_doc_pdf=no
		AX_COMPARE_VERSION([${DBLATEX_VERSION}], [ge], [${DBLATEX_MIN_VERSION}], [
			( cd "$DOCTESTDIR" && ${A2X} --format=pdf --destination-dir=. "${abs_srcdir}"/docs/asciidoc.txt && test -s asciidoc.pdf ) && can_build_doc_pdf=yes
			rm -f "${DOCTESTDIR}"/asciidoc.pdf
		], [])
		if test "${can_build_doc_pdf}" = yes ; then
			AC_MSG_RESULT(yes)
			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
		else
			AC_MSG_RESULT(no)
			if test "${nut_doc_build_target_flag}" = "yes" ; then
				DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
				AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation which you requested])
			else
				DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
			fi
		fi
		;;

	man*)
		AC_MSG_CHECKING([if we can build ${nut_doc_build_target_base}])
		can_build_doc_man=no
		if test "${nut_have_asciidoc}" = yes ; then
			( cd "$DOCTESTDIR" && ${A2X} --format manpage --destination-dir=. --xsltproc-opts "--nonet" "${abs_srcdir}"/docs/man/snmp-ups.txt && test -s snmp-ups.8 ) && can_build_doc_man=yes
			rm -f "${DOCTESTDIR}"/snmp-ups.8
		fi
		if test "${can_build_doc_man}" = yes ; then
			AC_MSG_RESULT(yes)
			DOC_BUILD_LIST="${DOC_BUILD_LIST} ${nut_doc_build_target_base}"
		else
			AC_MSG_RESULT(no)
			if test "${nut_doc_build_target_flag}" = "yes" ; then
				DOC_CANNOTBUILD_LIST="${DOC_CANNOTBUILD_LIST} ${nut_doc_build_target_base}"
				AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation which you requested])
			else
				DOC_SKIPBUILD_LIST="${DOC_SKIPBUILD_LIST} ${nut_doc_build_target_base}"
				if test "${nut_doc_build_target_flag}" = "auto" ; then
dnl Test that groff files exist (building from distributed tarball, not git repo)
					if test -s "${abs_srcdir}"/docs/man/snmp-ups.8 ; then
						AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation, but can install pre-built distributed copies])
						DOC_INSTALL_DISTED_MANS="yes"
					else
						AC_MSG_WARN([Unable to build ${nut_doc_build_target_base} documentation, and unable to install pre-built distributed copies because they are absent])
					fi
				fi  # Other variants include "no", "skip"...
			fi
		fi
		;;

	*)	rm -rf "${DOCTESTDIR}"
		AC_MSG_ERROR([--with-doc option refers to unknown documentation format: $nut_doc_build_target]) ;;

	esac
done
rm -rf "${DOCTESTDIR}"

case "${nut_with_doc}" in
auto)
	if test -n "${DOC_BUILD_LIST}"; then
		nut_with_doc="yes"
	else
		nut_with_doc="no"
	fi
	;;
no)
	;;
*)
	if test -n "${DOC_CANNOTBUILD_LIST}"; then
		AC_MSG_ERROR([Unable to build${DOC_CANNOTBUILD_LIST} documentation (check for 'no' results above)])
	fi

	if test -n "${DOC_SKIPBUILD_LIST}"; then
		AC_MSG_NOTICE([Skipping build of${DOC_SKIPBUILD_LIST} documentation (check for 'skip' results above)])
	fi

	if test -n "${DOC_BUILD_LIST}"; then
		nut_with_doc="yes"
	else
		nut_with_doc="no"
	fi
	;;
esac

NUT_REPORT_FEATURE([build specific documentation format(s)], [${nut_with_doc}], [${DOC_BUILD_LIST}],
					[WITH_DOCS], [Define to enable overall documentation generation])

WITH_MANS=no
SKIP_MANS=no
if echo "${DOC_BUILD_LIST}" | grep -w "man" >/dev/null || test "${DOC_INSTALL_DISTED_MANS}" = "yes" ; then
	WITH_MANS=yes
fi
if echo "${DOC_SKIPBUILD_LIST}" | grep -w "man" >/dev/null ; then
	SKIP_MANS=yes
fi
dnl Generally WITH_MANS=no is intentionally fatal for "make distcheck"
dnl But some larger distcheck suites check mans once and then focus on
dnl other aspects of the project, so they can explicitly skip docs (or
dnl just mans) instead. Note that for WITH_MANS=yes the SKIP_MANS value
dnl is effectively ignored by docs/man/Makefile.am at this time.
AM_CONDITIONAL(WITH_MANS, test "${WITH_MANS}" = "yes")
AM_CONDITIONAL(SKIP_MANS, test "${SKIP_MANS}" = "yes")
AM_CONDITIONAL(DOC_INSTALL_DISTED_MANS, test "${DOC_INSTALL_DISTED_MANS}" = "yes")

dnl ----------------------------------------------------------------------
dnl checks related to --with-dev

dnl We only init libtool there to allow AC_DISABLE_STATIC
AC_PROG_LIBTOOL

dnl ${nut_with_dev}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_dev}" != "no"; then
  nut_with_dev="yes"
else
  AC_DISABLE_STATIC
fi
AM_CONDITIONAL(WITH_DEV, test "${nut_with_dev}" = "yes")
NUT_REPORT_FEATURE([build and install the development files], [${nut_with_dev}], [],
					[WITH_DEV], [Define to enable development files support])

dnl ----------------------------------------------------------------------


AC_MSG_CHECKING(state path)
AC_ARG_WITH(statepath,
	AS_HELP_STRING([--with-statepath=PATH], [path for ups state files (/var/state/ups)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-statepath - see docs/configure.txt)
		;;
	*)
		STATEPATH="${withval}"
		;;
	esac
], [])
AC_DEFINE_UNQUOTED(STATEPATH, "${STATEPATH}", [Path for UPS driver state files])
AC_MSG_RESULT(${STATEPATH})

dnl ---------------------------------------------------------------------
dnl The 'alt pid path' is used by the drivers (via main.c) and upsd, since
dnl ideally they do not run as root and will not be able to write to the usual
dnl /var/run path.  This defaults to the STATEPATH since they should be
dnl able to write there.
dnl

AC_MSG_CHECKING(alt pid path)
AC_ARG_WITH(altpidpath,
	AS_HELP_STRING([--with-altpidpath=PATH], [path for driver/upsd .pid files (<statepath>)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-altpidpath - see docs/configure.txt)
		;;
	*)
		ALTPIDPATH="${withval}"
		;;
	esac
], [
	ALTPIDPATH="${STATEPATH}"
])
AC_DEFINE_UNQUOTED(ALTPIDPATH, "${ALTPIDPATH}", [Path for pid files of drivers and upsd (usually STATEPATH)])
AC_MSG_RESULT(${ALTPIDPATH})

AC_MSG_CHECKING(driver path)
AC_ARG_WITH(drvpath,
	AS_HELP_STRING([--with-drvpath=PATH], [where to install UPS drivers (EPREFIX/bin)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-drvpath - see docs/configure.txt)
		;;
	*)
		driverexecdir="${withval}"
		;;
	esac
], [])
conftemp="${driverexecdir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
AC_DEFINE_UNQUOTED(DRVPATH, "${conftemp}", [Default path for UPS drivers])
AC_MSG_RESULT(${driverexecdir})

AC_MSG_CHECKING(cgi path)
AC_ARG_WITH(cgipath,
	AS_HELP_STRING([--with-cgipath=PATH], [where to install CGI programs (EPREFIX/cgi-bin)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-cgipath - see docs/configure.txt)
		;;
	*)
		cgiexecdir="${withval}"
		;;
	esac
], [])
conftemp="${cgiexecdir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
AC_DEFINE_UNQUOTED(CGIPATH, "${conftemp}", [Default path for CGI programs])
AC_MSG_RESULT(${cgiexecdir})

AC_MSG_CHECKING(html path)
AC_ARG_WITH(htmlpath,
	AS_HELP_STRING([--with-htmlpath=PATH], [where to install HTML files (PREFIX/html)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-htmlpath - see docs/configure.txt)
		;;
	*)
		htmldir="${withval}"
		;;
	esac
], [])
conftemp="${htmldir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
AC_DEFINE_UNQUOTED(HTMLPATH, "${conftemp}", [Default path for HTML files])
AC_MSG_RESULT(${htmldir})

AC_MSG_CHECKING(pidpath)
AC_ARG_WITH(pidpath,
	AS_HELP_STRING([--with-pidpath=PATH], [path for .pid files (/var/run)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-pidpath - see docs/configure.txt)
		;;
	*)
		PIDPATH="${withval}"
		;;
	esac
], [])
AC_DEFINE_UNQUOTED(PIDPATH, "${PIDPATH}", [Path where the pid files should go])
AC_MSG_RESULT(${PIDPATH})

AC_MSG_CHECKING(network port number)
AC_ARG_WITH(port,
	AS_HELP_STRING([--with-port=PORT], [port for network communications (3493)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-port - see docs/configure.txt)
		;;
	*)
		PORT="${withval}"
		;;
	esac
], [
	PORT="3493"
])
AC_DEFINE_UNQUOTED(PORT, ${PORT}, [Port for network communications])
AC_MSG_RESULT(${PORT})

AC_MSG_CHECKING(user to run as)
AC_ARG_WITH(user,
	AS_HELP_STRING([--with-user=username], [user for programs started as root (nobody)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-user - see docs/configure.txt)
		;;
	*)
		RUN_AS_USER="${withval}"
		nut_user_given=yes
		;;
	esac
], [
	nut_user_given=no
])
AC_DEFINE_UNQUOTED(RUN_AS_USER, "${RUN_AS_USER}", [User to switch to if started as root])
AC_MSG_RESULT(${RUN_AS_USER})

AC_MSG_CHECKING(group membership of user to run as)
AC_ARG_WITH(group,
	AS_HELP_STRING([--with-group=groupname], [group membership of user for programs started as root (nogroup)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-group - see docs/configure.txt)
		;;
	*)
		RUN_AS_GROUP="${withval}"
		nut_group_given=yes
		;;
	esac
], [
	nut_group_given=no
])
AC_DEFINE_UNQUOTED(RUN_AS_GROUP, "${RUN_AS_GROUP}", [Group membership of user to switch to if started as root])
AC_MSG_RESULT(${RUN_AS_GROUP})

dnl check that --with-user is given if --with-group is given.
if test "${nut_user_given}" = "yes" -a "${nut_group_given}" = "no"; then
	AC_MSG_ERROR([If you specify --with-user, you also must specify --with-group])
elif test "${nut_user_given}" = "no" -a "${nut_group_given}" = "yes"; then
	AC_MSG_ERROR([If you specify --with-group, you also must specify --with-user])
fi

AC_MSG_CHECKING(facility for syslog)
AC_ARG_WITH(logfacility,
	AS_HELP_STRING([--with-logfacility=FACILITY], [facility for log messages (LOG_DAEMON)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-logfacility - see docs/configure.txt)
		;;
	*)
		LOGFACILITY="${withval}"
		;;
	esac
], [
	LOGFACILITY="LOG_DAEMON"
])
AC_DEFINE_UNQUOTED(LOG_FACILITY, ${LOGFACILITY}, [Desired syslog facility - see syslog(3)])
AC_MSG_RESULT(${LOGFACILITY})

dnl Autoconf versions before 2.62 do not allow consecutive quadrigraphs,
dnl so the help string depends on the version used
AC_MSG_CHECKING(which drivers to build)
AC_ARG_WITH(drivers,
	AS_HELP_STRING([m4_version_prereq(2.62,
		[@<:@--with-drivers=driver@<:@,driver@:>@@:>@],
		[[[[--with-drivers=driver@<:@,driver@:>@]]]])],
	[Only build specific drivers (all)]),
[
	case "${withval}" in
	yes|no)
		AC_MSG_ERROR(invalid option --with(out)-drivers - see docs/configure.txt)
		;;
	*)
		DRIVER_BUILD_LIST=`echo ${withval} | sed "s/,/ /g"`
		AC_MSG_RESULT(${DRIVER_BUILD_LIST})
		;;
	esac
], [
	DRIVER_BUILD_LIST="all"
	AC_MSG_RESULT(all available)
])
AM_CONDITIONAL(SOME_DRIVERS, test "${DRIVER_BUILD_LIST}" != "all")

if test "${DRIVER_BUILD_LIST}" != "all"; then
	NUT_REPORT([only build specific drivers], [${DRIVER_BUILD_LIST}])
fi

AC_MSG_CHECKING(which driver man pages to install)
if test "${WITH_MANS}" = "yes"; then
	if test "${DRIVER_BUILD_LIST}" = "all"; then
		DRIVER_MAN_LIST=all
		AC_MSG_RESULT(all available)
	else
		DRIVER_MAN_LIST=""
		for i in ${DRIVER_BUILD_LIST}; do
			if test -f ${srcdir}/docs/man/$i.8; then
				DRIVER_MAN_LIST="${DRIVER_MAN_LIST} $i.8"
			fi
		done
		AC_MSG_RESULT(${DRIVER_MAN_LIST})
	fi
else
	DRIVER_MAN_LIST=""
	AC_MSG_RESULT([none (manpages disabled)])
fi

AC_MSG_CHECKING(whether to strip debug symbols)
AC_ARG_ENABLE(strip,
	AS_HELP_STRING([--enable-strip], [Strip debugging symbols from binaries (no)]),
[
	case "${withval}" in
	no)
		AC_MSG_RESULT(no)
		;;
	*)
		AC_MSG_RESULT(yes)
		CFLAGS="${CFLAGS} -s"
		;;
	esac
], [
	AC_MSG_RESULT(no)
])

AC_MSG_CHECKING(whether to install pkg-config *.pc files)
AC_ARG_WITH(pkgconfig-dir,
	AS_HELP_STRING([--with-pkgconfig-dir=PATH], [where to install pkg-config *.pc files (EPREFIX/lib/pkgconfig)]),
[
	case "${withval}" in
	yes|auto)
		;;
	no)
		pkgconfigdir=""
		;;
	*)
		pkgconfigdir="${withval}"
		;;
	esac
], [])
if test -n "${pkgconfigdir}"; then
	AC_MSG_RESULT(using ${pkgconfigdir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(WITH_PKG_CONFIG, test -n "${pkgconfigdir}")

AC_MSG_CHECKING(whether to install Solaris SMF files)
solarissmf="auto"
AC_ARG_WITH([solaris-smf],
	AS_HELP_STRING([--with-solaris-smf=(yes|auto|no)], [Enable installation of NUT scripts and manifests for Solaris Service Management Framework (auto)]),
[
	case "${withval}" in
	auto|"")
		solarissmf="auto"
		;;
	yes|no)
		solarissmf="${withval}"
		;;
	*)
		AC_MSG_ERROR([Unexpected argument for --with-solaris-smf=${withval}])
		;;
	esac
], [])

if test x"$solarissmf" = xauto ; then
	if test -x /usr/sbin/svcadm && test -x /usr/sbin/svccfg && test -x /usr/bin/svcs ; then
		solarissmf="yes"
	else
		solarissmf="no"
	fi
fi
AC_MSG_RESULT([${solarissmf}])
AM_CONDITIONAL(WITH_SOLARIS_SMF, test x"$solarissmf" = x"yes")

AC_MSG_CHECKING(whether to make Solaris SVR4 packages)
solarispkg_svr4="auto"
AC_ARG_WITH([solaris-pkg-svr4],
	AS_HELP_STRING([--with-solaris-pkg-svr4=(yes|auto|no)], [Enable construction of Solaris SVR4 packages (auto)]),
[
	case "${withval}" in
	auto|"")
		solarispkg_svr4="auto"
		;;
	yes|no)
		solarispkg_svr4="${withval}"
		;;
	*)
		AC_MSG_ERROR([Unexpected argument for --with-solaris-pkg-svr4=${withval}])
		;;
	esac
], [])

if test x"$solarispkg_svr4" = xauto ; then
	if test -x /usr/bin/pkgtrans && test -x /usr/bin/pkgmk && test -x /usr/bin/pkgproto ; then
		solarispkg_svr4="yes"
	else
		solarispkg_svr4="no"
	fi
fi
AC_MSG_RESULT([${solarispkg_svr4}])
AM_CONDITIONAL(WITH_SOLARIS_PKG_SVR4, test x"$solarispkg_svr4" = x"yes")

AC_MSG_CHECKING(whether to make Solaris IPS packages)
solarispkg_ips="auto"
AC_ARG_WITH([solaris-pkg-ips],
	AS_HELP_STRING([--with-solaris-pkg-ips=(yes|auto|no)], [Enable construction of Solaris IPS packages (auto)]),
[
	case "${withval}" in
	auto|"")
		solarispkg_ips="auto"
		;;
	yes|no)
		solarispkg_ips="${withval}"
		;;
	*)
		AC_MSG_ERROR([Unexpected argument for --with-solaris-pkg-ips=${withval}])
		;;
	esac
], [])

if test x"$solarispkg_ips" = xauto ; then
	if test -x /usr/bin/pkg && test -x /usr/bin/pkgmogrify && test -x /usr/bin/pkgdepend ; then
		solarispkg_ips="yes"
	else
		solarispkg_ips="no"
	fi
fi
AC_MSG_RESULT([${solarispkg_ips}])
AM_CONDITIONAL(WITH_SOLARIS_PKG_IPS, test x"$solarispkg_ips" = x"yes")

AC_MSG_CHECKING(whether to install systemd files)
AC_ARG_WITH([systemdsystemunitdir],
	AS_HELP_STRING([--with-systemdsystemunitdir=DIR], [Directory for systemd service files (auto)]),
[
	case "${withval}" in
	yes|auto|"")
		systemdsystemunitdir=`$PKG_CONFIG --variable=systemdsystemunitdir systemd`
		;;
	no)
		systemdsystemunitdir=""
		;;
	*)
		systemdsystemunitdir="${withval}"
		;;
	esac
], [])
if test -n "${systemdsystemunitdir}"; then
	AC_MSG_RESULT(using ${systemdsystemunitdir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(HAVE_SYSTEMD, test "$systemdsystemunitdir" != "")
dnl This option is only provided so that make distcheck can override it,
dnl otherwise we ask pkg-config whenever --with-systemdsystemunitdir is
dnl given
AC_ARG_WITH([systemdshutdowndir],
	AS_HELP_STRING([--with-systemdshutdowndir=DIR], [Directory for systemd shutdown scripts (auto)]),
	[systemdshutdowndir=${withval}])
if test -n "${systemdsystemunitdir}"; then
	case "${systemdshutdowndir}" in
	yes|auto|"")
		systemdshutdowndir=`$PKG_CONFIG --variable=systemdshutdowndir systemd`
	esac
fi

dnl
dnl Tests for CppUnit availability and usability (will be built if we can,
dnl and if valgrind is enabled for this configuration - reported below).
dnl Using CppUnit implies C++ support!
dnl Theoretically, libcppunit-dev will pull up to g++, through libstdc++...
dnl AM_PATH_CPPUNIT(1.9.6)

dnl # Tests with gcc-4.8 require this C++11 option to be provided explicitly
dnl # gcc-4.6 does not support this yet; newer gcc's should be ok by default.
dnl # Could use `AX_CXX_COMPILE_STDCXX_11([noext], [optional])` if it were
dnl # available everywhere. Or AX_CHECK_COMPILE_FLAG if it was ubiquitous:
dnl ###AX_CHECK_COMPILE_FLAG([-std=c++11],
dnl ###    [CXXFLAGS="$CXXFLAGS -std=c++11"
dnl ###     have_cxx11=yes],
dnl ###    [have_cxx11=no])

AC_MSG_CHECKING(for C++11 support in current compiler)
have_cxx11=unknown
my_CXXFLAGS="$CXXFLAGS"
AC_LANG_PUSH([C++])

CPLUSPLUS_DECL='
#include <stdio.h>
#if __cplusplus < 201103L
  #error This library needs at least a C++11 compliant compiler
#endif
'
CPLUSPLUS_MAIN='printf("%ld\n", __cplusplus);'

AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[${CPLUSPLUS_DECL}]], [[${CPLUSPLUS_MAIN}]])],
    [AC_MSG_RESULT([yes, out of the box])
     have_cxx11=yes],
    [CXXFLAGS="$CXXFLAGS -std=c++11"
     AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[${CPLUSPLUS_DECL}]], [[${CPLUSPLUS_MAIN}]])],
        [AC_MSG_RESULT([yes, GCC-style (as C++11)])
         have_cxx11=yes],
        [CXXFLAGS="$CXXFLAGS -std=c++0x"
         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[${CPLUSPLUS_DECL}]], [[${CPLUSPLUS_MAIN}]])],
            [AC_MSG_RESULT([yes, GCC-style (as C++0X)])
             have_cxx11=yes],
            [AC_MSG_RESULT([no])
             CXXFLAGS="$my_CXXFLAGS"
             have_cxx11=no])])])
AM_CONDITIONAL(HAVE_CXX11, test "${have_cxx11}" = "yes")
AC_LANG_POP([C++])
unset CPLUSPLUS_MAIN
unset CPLUSPLUS_DECL

have_cppunit="no"
CPPUNIT_NUT_CXXFLAGS=""
AS_IF([test x"$have_PKG_CONFIG" = xyes],
    [AS_IF([test x"${have_cxx11}" = xyes],
        [PKG_CHECK_MODULES(CPPUNIT, cppunit, have_cppunit=yes, have_cppunit=no)
         AS_IF([test "${have_cppunit}" != "yes"],
            [AC_MSG_WARN([libcppunit not found - those C++ tests will not be built.])
             have_cppunit=no],
            [AS_IF([test -n "$CXX"],
                [AS_IF([$CXX --version 2>&1 | grep 'Free Software Foundation' > /dev/null],
                    [CPPUNIT_NUT_CXXFLAGS="-g -O0"])])
            ])
        ])
    ], [AC_MSG_WARN([pkg-config not found, can not look properly for libcppunit - those C++ tests will not be built.])
        have_cppunit=no]
)
AM_CONDITIONAL(HAVE_CPPUNIT, test "${have_cppunit}" = "yes")
AC_DEFINE_UNQUOTED(CPPUNIT_NUT_CXXFLAGS, $CPPUNIT_NUT_CXXFLAGS, [Compiler flags for cppunit tests])

AC_MSG_CHECKING(whether to install Augeas configuration-management lenses)
AC_ARG_WITH(augeas-lenses-dir,
	AS_HELP_STRING([--with-augeas-lenses-dir=PATH], [where to install Augeas configuration-management lenses (/usr/share/augeas/lenses{/dist,/})]),
[
	case "${withval}" in
	yes)
		if test -z "${auglensdir}"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([augeas lenses directory requested but not found in default location])
		fi
		;;
	auto)
		;;
	no)
		auglensdir=""
		;;
	*)
		auglensdir="${withval}"
		;;
	esac
], [])
if test -n "${auglensdir}"; then
	AC_MSG_RESULT(using ${auglensdir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(WITH_AUGLENS, test -n "${auglensdir}")

AC_PATH_PROGS([AUGPARSE], [augparse], [none])
AM_CONDITIONAL([HAVE_AUGPARSE], [test "x${AUGPARSE}" != "xnone"])
AC_MSG_CHECKING([whether to enable Augeas configuration-management lenses tests])
if test "x${AUGPARSE}" != xnone ; then
	AC_MSG_RESULT(yes)
else
	AC_MSG_RESULT(no)
fi


AC_MSG_CHECKING(whether to install hotplug rules)
AC_ARG_WITH(hotplug-dir,
	AS_HELP_STRING([--with-hotplug-dir=PATH], [where to install hotplug rules (/etc/hotplug)]),
[
	case "${withval}" in
	yes)
		if test -z "${hotplugdir}"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([hotplug directory requested but not found])
		fi
		;;
	auto)
		;;
	no)
		hotplugdir=""
		;;
	*)
		hotplugdir="${withval}"
		;;
	esac
], [])
if test -n "${hotplugdir}"; then
	AC_MSG_RESULT(using ${hotplugdir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(WITH_HOTPLUG, test -n "${hotplugdir}")

AC_MSG_CHECKING(whether to install udev rules)
AC_ARG_WITH(udev-dir,
	AS_HELP_STRING([--with-udev-dir=PATH], [where to install udev rules (/lib/udev or /etc/udev)]),
[
	case "${withval}" in
	yes)
		if test -z "${udevdir}"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([udev directory requested but not found])
		fi
		;;
	auto)
		;;
	no)
		udevdir=""
		;;
	*)
		udevdir="${withval}"
		;;
	esac
], [])
if test -n "${udevdir}"; then
	AC_MSG_RESULT(using ${udevdir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(WITH_UDEV, test -n "${udevdir}")

dnl FreeBSD devd support:

AC_MSG_CHECKING(whether to install FreeBSD devd.conf file)
AC_ARG_WITH(devd-dir,
	AS_HELP_STRING([--with-devd-dir=PATH], [where to install devd.conf file (/usr/local/etc/devd or /etc/devd)]),
[
	case "${withval}" in
	yes)
		if test -z "${devddir}"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([devd directory requested but not found])
		fi
		;;
	auto)
		;;
	no)
		devddir=""
		;;
	*)
		devddir="${withval}"
		;;
	esac
], [])
if test -n "${devddir}"; then
	AC_MSG_RESULT(using ${devddir})
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL(WITH_DEVD, test -n "${devddir}")

dnl

dnl AIX system
AM_CONDITIONAL([SYSTEM_AIX], [test "xAIX" = "x`uname -s 2>/dev/null`"])

dnl processor type
AC_DEFINE_UNQUOTED(CPU_TYPE, $target_cpu, [Define processor type])

dnl Can use valgrind for memory-leak testing, if present
AC_PATH_PROGS([VALGRIND], [valgrind], [none])
with_valgrind="auto"
AC_MSG_CHECKING(whether to use valgrind for memory-leak testing)
AC_ARG_WITH(valgrind,
	AS_HELP_STRING([--with-valgrind=PATH], [whether to use valgrind for memory-leak testing]),
[
	case "${withval}" in
	yes)
		if test "x$VALGRIND" = "xnone"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([valgrind requested but not found])
		fi
		with_valgrind="yes"
		;;
	auto)
		with_valgrind="auto"
		;;
	no)
		with_valgrind="no"
		;;
	*)
		AC_PATH_PROGS([VALGRIND], ["${withval}"], [none])
		if test "x$VALGRIND" = "xnone"; then
			AC_MSG_RESULT(no)
			AC_MSG_ERROR([valgrind requested but not found])
		fi
		with_valgrind="yes"
		;;
	esac
], [])

if test "x${with_valgrind}" = xauto; then
	if test "x$VALGRIND" = "xnone"; then
		with_valgrind="no"
	else
		with_valgrind="yes"
	fi
fi

if test "x${with_valgrind}" = xyes; then
	AC_MSG_RESULT(using ${VALGRIND})
	AC_MSG_NOTICE([Do not forget to build with debug (e.g. pass '-g' in CFLAGS for GCC) for best results with valgrind tests])
else
	AC_MSG_RESULT(no)
fi
AM_CONDITIONAL([HAVE_VALGRIND], [test "x${VALGRIND}" != "xnone"])
AM_CONDITIONAL([WITH_VALGRIND], [test "x${with_valgrind}" = "xyes"])

AC_MSG_CHECKING([whether to build cppunit tests using valgrind support])
if test "x${with_valgrind}" = xyes && test "x${have_cppunit}" = xyes ; then
	AC_MSG_RESULT(yes)
else
	AC_MSG_RESULT(no)
fi

dnl expand ${sysconfdir} and write it out - note that most packages
dnl override it to be /etc/nut, /etc/ups or similar, while the
dnl autotools default would be $prefix/etc
conftemp="${sysconfdir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
CONFPATH=${conftemp}
AC_DEFINE_UNQUOTED(CONFPATH, "${conftemp}", [Default path for configuration files])

dnl same for datadir
conftemp="${datadir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
DATADIR=${conftemp}
NUT_DATADIR=${conftemp}
AC_DEFINE_UNQUOTED(DATADIR, "${conftemp}", [Default path for data files])

dnl same for bindir
conftemp="${bindir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
BINDIR=${conftemp}
AC_DEFINE_UNQUOTED(BINDIR, "${conftemp}", [Default path for user executables])

dnl same for sbindir
conftemp="${sbindir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
SBINDIR=${conftemp}
AC_DEFINE_UNQUOTED(SBINDIR, "${conftemp}", [Default path for system executables])

dnl same for libdir
conftemp="${libdir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
LIBDIR=${conftemp}
AC_DEFINE_UNQUOTED(LIBDIR, "${conftemp}", [Default path for system libraries])

dnl same for libexecdir
conftemp="${libexecdir}"
eval conftemp=\"${conftemp}\"
eval conftemp=\"${conftemp}\"
LIBEXECDIR=${conftemp}
AC_DEFINE_UNQUOTED(LIBEXECDIR, "${conftemp}", [Default path for system exec-libraries])


dnl checks related to --with-snmp enabled on command-line

dnl ${nut_with_snmp}: any value except "yes" or "no" is treated as "auto".
if test "${nut_with_snmp}" = "yes" -a "${nut_have_libnetsnmp}" != "yes"; then
   AC_MSG_ERROR([Net-SNMP libraries not found, required for SNMP drivers])
fi

if test "${nut_with_snmp}" != "no"; then
   nut_with_snmp="${nut_have_libnetsnmp}"
fi

NUT_REPORT_FEATURE([build SNMP drivers], [${nut_with_snmp}], [],
					[WITH_SNMP], [Define to enable SNMP support])
AM_CONDITIONAL([HAVE_SNMP], [test "${nut_have_libsnmp}" = "yes"])


if test -n "${host_alias}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_HOST_ALIAS, "${host_alias}", [host env spec we run on])
else
	if test -n "${host}" ; then
		AC_DEFINE_UNQUOTED(AUTOTOOLS_HOST_ALIAS, "${host}", [host env spec we run on])
	fi
fi
if test -n "${build_alias}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_BUILD_ALIAS, "${build_alias}", [host env spec we built on])
else
	if test -n "${build}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_BUILD_ALIAS, "${build}", [host env spec we built on])
	fi
fi
if test -n "${target_alias}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_TARGET_ALIAS, "${target_alias}", [host env spec we built for])
else
	if test -n "${target}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_TARGET_ALIAS, "${target}", [host env spec we built for])
	fi
fi

if test -n "${host_cpu}" -a -n "${host_os}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_HOST_SHORT_ALIAS, "${host_cpu}-${host_os}", [host OS short spec we run on])
fi
if test -n "${build_cpu}" -a -n "${build_os}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_BUILD_SHORT_ALIAS, "${build_cpu}-${build_os}", [host OS short spec we built on])
fi
if test -n "${target_cpu}" -a -n "${target_os}" ; then
	AC_DEFINE_UNQUOTED(AUTOTOOLS_TARGET_SHORT_ALIAS, "${target_cpu}-${target_os}", [host OS short spec we built for])
fi

dnl ----------------------------------------------------------------------

dnl Current date
now=`TZ=UTC date +%Y-%m-%d`

AC_SUBST(now)
AC_SUBST(OS_NAME)
AC_SUBST(TREE_VERSION)
AC_SUBST(NUT_NETVERSION)
AC_SUBST(LIBSSL_CFLAGS)
AC_SUBST(LIBSSL_LIBS)
AC_SUBST(LIBGD_CFLAGS)
AC_SUBST(LIBGD_LDFLAGS)
AC_SUBST(LIBNETSNMP_CFLAGS)
AC_SUBST(LIBNETSNMP_LIBS)
AC_SUBST(LIBUSB_CFLAGS)
AC_SUBST(LIBUSB_LIBS)
AC_SUBST(LIBNEON_CFLAGS)
AC_SUBST(LIBNEON_LIBS)
AC_SUBST(LIBAVAHI_CFLAGS)
AC_SUBST(LIBAVAHI_LIBS)
AC_SUBST(LIBPOWERMAN_CFLAGS)
AC_SUBST(LIBPOWERMAN_LIBS)
AC_SUBST(LIBMODBUS_CFLAGS)
AC_SUBST(LIBMODBUS_LIBS)
AC_SUBST(LIBIPMI_CFLAGS)
AC_SUBST(LIBIPMI_LIBS)
AC_SUBST(DOC_BUILD_LIST)
AC_SUBST(LIBWRAP_CFLAGS)
AC_SUBST(LIBWRAP_LIBS)
AC_SUBST(LIBLTDL_CFLAGS)
AC_SUBST(LIBLTDL_LIBS)
AC_SUBST(DRIVER_BUILD_LIST)
AC_SUBST(DRIVER_MAN_LIST)
AC_SUBST(DRIVER_INSTALL_TARGET)
AC_SUBST(NETLIBS)
AC_SUBST(SERLIBS)
AC_SUBST(PIDPATH)
AC_SUBST(STATEPATH)
AC_SUBST(CONFPATH)
AC_SUBST(BINDIR)
AC_SUBST(LIBDIR)
AC_SUBST(NUT_DATADIR, [`eval echo "${DATADIR}"`])
AC_SUBST(NUT_LIBEXECDIR, [`eval echo "${LIBEXECDIR}"`])
AC_SUBST(DRVPATH)
AC_SUBST(SBINDIR)
AC_SUBST(PORT)
AC_SUBST(RUN_AS_USER)
AC_SUBST(RUN_AS_GROUP)
AC_SUBST(SUN_LIBUSB)
AC_SUBST(WORDS_BIGENDIAN)
AC_SUBST(cgiexecdir)
AC_SUBST(devddir)
AC_SUBST(driverexecdir)
AC_SUBST(htmldir)
AC_SUBST(pkgconfigdir)
AC_SUBST(systemdsystemunitdir)
AC_SUBST(systemdshutdowndir)
AC_SUBST(auglensdir)
AC_SUBST(hotplugdir)
AC_SUBST(udevdir)

AC_OUTPUT([
 clients/Makefile
 common/Makefile
 conf/Makefile
 conf/upsmon.conf.sample
 conf/upssched.conf.sample
 data/html/header.html
 data/html/Makefile
 data/Makefile
 data/driver.list
 docs/Makefile
 docs/docinfo.xml
 docs/man/Makefile
 drivers/Makefile
 include/Makefile
 lib/libupsclient-config
 lib/libupsclient.pc
 lib/libnutclient.pc
 lib/libnutscan.pc
 lib/Makefile
 scripts/Aix/nut-aix.spec
 scripts/augeas/Makefile
 scripts/augeas/nutnutconf.aug
 scripts/augeas/nutupsconf.aug
 scripts/augeas/nutupsdconf.aug
 scripts/augeas/nutupsdusers.aug
 scripts/augeas/nutupsmonconf.aug
 scripts/augeas/nutupsschedconf.aug
 scripts/augeas/nuthostsconf.aug
 scripts/augeas/nutupssetconf.aug
 scripts/avahi/nut.service
 scripts/devd/Makefile
 scripts/devd/nut-usb.conf
 scripts/hotplug/Makefile
 scripts/hotplug/libhidups
 scripts/Aix/nut.init
 scripts/HP-UX/nut.psf
 scripts/HP-UX/postinstall
 scripts/python/Makefile
 scripts/upsdrvsvcctl/Makefile
 scripts/upsdrvsvcctl/nut-driver-enumerator.sh
 scripts/upsdrvsvcctl/upsdrvsvcctl
 scripts/systemd/Makefile
 scripts/systemd/nut-driver@.service
 scripts/systemd/nut-monitor.service
 scripts/systemd/nut-server.service
 scripts/systemd/nut-driver-enumerator.service
 scripts/systemd/nut-driver-enumerator.path
 scripts/systemd/nutshutdown
 scripts/Solaris/nut-driver-enumerator.xml
 scripts/Solaris/nut-driver.xml
 scripts/Solaris/nut-monitor.xml
 scripts/Solaris/nut-server.xml
 scripts/Solaris/nut.xml
 scripts/Solaris/svc-nut-server
 scripts/Solaris/svc-nut-monitor
 scripts/Solaris/Makefile
 scripts/Solaris/pkginfo
 scripts/Solaris/preinstall
 scripts/Solaris/postinstall
 scripts/Solaris/preremove
 scripts/Solaris/postremove
 scripts/Solaris/preproto.pl
 scripts/Solaris/nut
 scripts/udev/Makefile
 scripts/udev/nut-ipmipsu.rules
 scripts/udev/nut-usbups.rules
 scripts/ufw/nut.ufw.profile
 scripts/Makefile
 server/Makefile
 tools/Makefile
 tools/nut-scanner/Makefile
 tests/Makefile
 Makefile
])

NUT_PRINT_FEATURE_REPORT
